package com.zpark.se.map;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;

/**
 * map集合遍历
 */
public class Demo03 {
    public static void main(String[] args) {
        // 创建map对象
        Map<String, String> map = new HashMap<>();
        // 添加数据
        map.put("001", "小明");
        map.put("002", "小红");
        map.put("003", "小花");
        map.put("004", "小王");
        map.put("005", "小张");
        map.put("006", "小李");

        System.out.println(map);

        // 遍历map
        // 1、使用forEach方法
        map.forEach((k, v) -> System.out.println(k + "-->" + v));
        System.out.println("***************************************");

        // 2、使用普通循环遍历   map.get(k)
        Set<String> keys = map.keySet();
        // 遍历set集合获取key
        for (String key : keys) {
            String value = map.get(key);
            System.out.println(key + "-->" + value);
        }

        // 使用迭代器遍历
        Iterator<String> iterator = keys.iterator();
        while (iterator.hasNext()) {
            String key = iterator.next();
            String value = map.get(key);
            System.out.println(key + "-->" + value);
        }

        System.out.println("***************************************");

        // 3、使用map.entrySet()
        // 获取Map的所有键值对，并存储在一个Set集合中，以便进行遍历
        Set<Map.Entry<String, String>> set = map.entrySet();
        // 遍历Set集合中的每个键值对
        for (Map.Entry<String, String> entry : set) {
            // 获取当前键值对的键
            String key = entry.getKey();
            // 获取当前键值对的值
            String value = entry.getValue();
            // 打印键值对信息
            System.out.println(key + "-->" + value);
        }

        // 使用迭代器遍历
        // 创建一个迭代器，用于遍历存储字符串键值对的集合
        Iterator<Map.Entry<String, String>> iterator1 = set.iterator();
        // 循环遍历集合中的每个元素
        while (iterator1.hasNext()) {
            // 获取当前元素，即一个键值对
            Map.Entry<String, String> entry = iterator1.next();

            // 获取键值对的键
            String key = entry.getKey();
            // 获取键值对的值
            String value = entry.getValue();

            // 打印键值对信息
            System.out.println(key + "-->" + value);
        }

        System.out.println("***************************************");
    }
}
